默认情况下 Jersey 2.x 不隐式注册任何扩展功能的在 classpath 上的可用的模块,除非明确说明,否则在每个特定的扩展文件。用户将明确注册的扩展功能,使用他们的 Application 子类。Jersey 提供模块不需要显式登记他们的扩展功能,因为这些在配置(客户端/服务器)中将会被Jersey 运行时发现和注册,这些功能模块实现的这些特性将呈现在 JAX-RS 应用部署的 classpath 上。这些自动发现模块包括:
除了这些模块也有几个特性/提供者 出现在 jersey-server 模块,被过这一机制发现并且受到 Jersey 自动发现的配置的影响(见第4.3.1节,“配置自动发现机制”),即:
几乎所有的 Jersey 自动发现的实现拥有 AutoDiscoverable.DEFAULT_PRIORITY @Priority 的设置。
注意:自动发现功能是通过实现内部 AutoDiscoverable Jersey SPI 这个接口目前是不公开的,以及考虑到未来的变化,当试图使用它要小心。
在 Jersey,以上所描述的自动发现机制特性是默认启用的。它可以通过使用特殊(普通/服务器/客户端)属性来关闭:常见自动发现属性:
当设置时,自动发现机制在客户端/服务端全局的被关闭
当设置,禁用JSON处理配置(JSR-353)特征。
当设置,禁用 MOXy Json 配置特征。
为每个这些属性,有一个客户机/服务器计数器部分分别只在 Jersey 客户端或服务器运行时呈现(见 ClientProperties / ServerProperties)。设置时,每一个客户机/服务器相关的特定自动发现属性覆盖相关的公共属性值。
注意:如果一个自动发现机制(一般或特定功能)被禁用,然后所有的功能,组件和/或性能,采用自动发现机制的默认注册必须手动注册。